<template>
	<view>
		<view>
		<text>hhhhh</text>
		</view>
		<view>
		<text>payData:{{payData}}</text>
		</view>
		<view>
		<text>rtData: {{rtData}}</text>
		</view>
		<button @click="pay(rtData)">支付测试</button>
		<button @click="payRequest()">发起支付</button>
	</view>
</template>

<script>
	import {
		requestFun
	} from '@/utils/requestUtil'
	var jweixin = require('jweixin-module');
	export default {
		data() {
			return {
				orderVO: {},
				orderId: '',
				prepayId: '',
				rtData: {},
				payData: {},
			}
		},
		methods: {
			makeOrder: function() {
				//调用后台接口生成订单
				this.orderId = objec.data.orderVO.id;
				this.orderVO = objec.data.orderVO;
				this.makePay();
			},
			makePay: function() {
				//从后台获取签名，此处根据自己的接口写
				this.prepayId = objec.data.prepayId;
				this.rtData = objec.data.rtData;
				this.payRequest()
			},
			getQueryVariable: function(variable) {
				var query = window.location.search.substring(1);
				var vars = query.split("&");
				for (var i = 0; i < vars.length; i++) {
					var pair = vars[i].split("=");
					if (pair[0] == variable) {
						return pair[1];
					}
				}
				return (false);
			},
			pay: function(data) {
				var ts = this
				requestFun('/api/wechat/pay', 'POST', ts.rtData, res => {
					if (res.data.code == ts.$code.successCode) {
						ts.payData = res.data.data
						console.log(ts.payData)
					} else {
						ts.$api.msg(res.data.message)
					}
				}, error => {
					console.error('请求出错了', error)
				})


			},
			payRequest: function() {
				//此为调取微信API接口
				var self = this;
				uni.showLoading({
					title: '加载中'
				});
				jweixin.config({
					debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
					appId: self.rtData.appId, // 必填，公众号的唯一标识
					timestamp: self.rtData.timeStamp, // 必填，生成签名的时间戳
					nonceStr: self.rtData.nonceStr, // 必填，生成签名的随机串
					signature: self.rtData.paySign, // 必填，签名，见附录1
					jsApiList: ['chooseWXPay'] // 必填，需要使用的JS接口列表，所有JS接口列表见附录2
				});
				jweixin.ready(function() {
					jweixin.checkJsApi({
						jsApiList: ['chooseWXPay'], // 需要检测的JS接口列表，所有JS接口列表见附录2,
						success: function(res) {
							console.log('checkjsapi Success')
							console.log(res);
						},
						fail: function(res) {
							console.log('res')
							console.log(res);
						}
					});
					jweixin.chooseWXPay({
						timestamp: self.payData.timeStamp, // 支付签名时间戳，注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
						nonceStr: self.payData.nonceStr, // 支付签名随机串，不长于 32 位
						package: self.payData.package, // 统一支付接口返回的prepay_id参数值，提交格式如：prepay_id=***）
						signType: 'MD5', // 签名方式，默认为'SHA1'，使用新版支付需传入'MD5'
						paySign: self.payData.paySign, // 支付签名
						success: function(res) {
							// 支付成功后的回调函数
							uni.hideLoading();
							console.log('paysuccess')
							console.log(res)
							var route = 'payResult' + '?type=1' + '&id=' + self.orderVO.id + '&orderTime=' + self.orderVO.createTime +
								'&price=' + self.orderVO.payPrice;
							uni.navigateTo({
								url: route
							});

						},
						cancel: function(r) {
							uni.hideLoading();
							var route = 'payResult' + '?type=2' + '&id=' + self.orderVO.id + '&orderTime=' + self.orderVO.createTime +
								'&price=' + self.orderVO.payPrice;
							uni.navigateTo({
								url: route
							});
						},
						fail: function(res) {
							uni.hideLoading();
							console.log('payfail')
							console.log(res)
							var route = 'payResult' + '?type=0' + '&id=' + self.orderVO.id + '&orderTime=' + self.orderVO.createTime +
								'&price=' + self.orderVO.payPrice;
							uni.navigateTo({
								url: route
							});
						}
					});
				});

				jweixin.error(function(res) {
					console.log('error')
					console.log(res)
					uni.hideLoading();
					uni.showToast({
						icon: 'none',
						title: '支付失败了',
						duration: 4000
					});
					// config信息验证失败会执行error函数，如签名过期导致验证失败，具体错误信息可以打开config的debug模式查看，也可以在返回的res参数中查看，对于SPA可以在这里更新签名。
					/*alert("config信息验证失败");*/
				});
			},
			onLoad: function(option) {
				var ts = this
				console.log(option)
				requestFun('/api/wechat/getWxJsapiSignature', 'POST', {
					url: 'pay.yunjiukeji.cn'
				}, res => {
					if (res.data.code == ts.$code.successCode) {
						ts.rtData = res.data.data
						console.log(ts.rtData)
						console.log(ts.rtData.redirectUri)
						// #ifdef H5
						if (option.res) {
							var code = ts.getQueryVariable("code");
							requestFun('/api/wechat/getWxJsapiSignature', 'POST', {
								code: code
							}, res => {
								if (res.data.code == ts.$code.successCode) {
									ts.rtData = res.data.data
								} else {
									ts.$api.msg(res.data.message)
								}
							}, error => {
								console.error('请求出错了', error)
							})
						} else {
							window.location.href = ts.rtData.redirectUri;
						}
						// #endif

					} else {
						ts.$api.msg(res.data.message)
					}
				}, error => {
					console.error('请求出错了', error)
				})


			}
		}
	}
</script>

<style>

</style>
